টাস্ক প্যারালাল লাইব্রেরি (TPL)

টাস্ক প্যারালাল লাইব্রেরি (Task Parallel Library বা TPL) সি# এ একটি শক্তিশালী কনকারেন্সি লাইব্রেরি, যা সমান্তরাল প্রোগ্রামিং (Parallel Programming) সহজ করে। এটি .NET ফ্রেমওয়ার্কের System.Threading.Tasks নেমস্পেসের অংশ এবং টাস্ক-ভিত্তিক কাজগুলো সমান্তরালে চালানোর জন্য ডিজাইন করা হয়েছে। TPL এর মাধ্যমে প্যারালাল প্রোগ্রামিংয়ের জটিলতা কমানো যায় এবং প্রোগ্রামের কার্যক্ষমতা বৃদ্ধি করা যায়।

TPL এর বৈশিষ্ট্য

  • সহজ টাস্ক ব্যবস্থাপনা: TPL ব্যবহার করে টাস্ক তৈরি, পরিচালনা এবং ট্র্যাক করা সহজ।
  • সহজ কনকারেন্সি নিয়ন্ত্রণ: একাধিক কাজকে সমান্তরালে চালানোর সুবিধা।
  • Error Handling: TPL সহজে এক্সেপশন হ্যান্ডলিং এবং টাস্ক ক্যাঙ্কেল করার জন্য ব্যবস্থা সরবরাহ করে।

TPL এর গুরুত্বপূর্ণ কিছু ক্লাস ও মেথড

  • Task: টাস্ক তৈরি ও পরিচালনা করতে ব্যবহৃত।
  • Task.Run: একটি টাস্ক শুরু করে।
  • Task.WhenAll এবং Task.WhenAny: একাধিক টাস্ককে একত্রে পরিচালনা করতে ব্যবহৃত।
  • Parallel.For এবং Parallel.ForEach: লুপকে সমান্তরালে চালানোর জন্য ব্যবহৃত।

টাস্ক তৈরি ও ব্যবহার

Task ক্লাস দিয়ে টাস্ক তৈরি করা হয় এবং Start() মেথড বা Task.Run দিয়ে টাস্ক চালানো যায়।

উদাহরণ: Task ক্লাস ব্যবহার করে টাস্ক তৈরি

using System;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        Task task = new Task(() =>
        {
            for (int i = 1; i <= 5; i++)
            {
                Console.WriteLine("Task running: " + i);
            }
        });

        task.Start();
        task.Wait(); // টাস্ক শেষ হওয়ার জন্য অপেক্ষা

        Console.WriteLine("Task completed.");
    }
}

Task.Run() ব্যবহার করে টাস্ক চালানো

Task.Run একটি নতুন টাস্ক তৈরি এবং চালানোর সহজ পদ্ধতি।

using System;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        Task task = Task.Run(() =>
        {
            for (int i = 1; i <= 5; i++)
            {
                Console.WriteLine("Running task: " + i);
            }
        });

        await task; // টাস্ক শেষ হওয়া পর্যন্ত অপেক্ষা

        Console.WriteLine("Task is complete.");
    }
}

একাধিক টাস্ক পরিচালনা (Task.WhenAll এবং Task.WhenAny)

Task.WhenAll এবং Task.WhenAny মেথডগুলো একাধিক টাস্ক চালানো এবং একসাথে পরিচালনা করতে ব্যবহৃত হয়।

উদাহরণ: Task.WhenAll দিয়ে একাধিক টাস্ক একসাথে চালানো

using System;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        Task task1 = Task.Run(() => Console.WriteLine("Task 1"));
        Task task2 = Task.Run(() => Console.WriteLine("Task 2"));
        Task task3 = Task.Run(() => Console.WriteLine("Task 3"));

        await Task.WhenAll(task1, task2, task3); // সব টাস্ক শেষ হওয়া পর্যন্ত অপেক্ষা

        Console.WriteLine("All tasks completed.");
    }
}

Task.WhenAny দিয়ে একটিমাত্র টাস্ক শেষ হওয়া পর্যন্ত অপেক্ষা

using System;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        Task task1 = Task.Delay(2000); // ২ সেকেন্ড অপেক্ষা
        Task task2 = Task.Delay(1000); // ১ সেকেন্ড অপেক্ষা

        await Task.WhenAny(task1, task2); // যেকোনো একটি টাস্ক শেষ হলে পরবর্তী কোড চালাবে

        Console.WriteLine("One of the tasks completed.");
    }
}

Parallel ক্লাসের ব্যবহার

Parallel.For এবং Parallel.ForEach সমান্তরালে লুপ চালানোর জন্য ব্যবহৃত হয়।

উদাহরণ: Parallel.For

using System;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        Parallel.For(1, 6, i =>
        {
            Console.WriteLine("Parallel Task: " + i);
        });

        Console.WriteLine("Parallel.For loop completed.");
    }
}

উদাহরণ: Parallel.ForEach

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };

        Parallel.ForEach(names, name =>
        {
            Console.WriteLine("Processing: " + name);
        });

        Console.WriteLine("Parallel.ForEach loop completed.");
    }
}

TPL এর মাধ্যমে টাস্ক ক্যান্সেল করা (Task Cancellation)

কখনো কখনো নির্দিষ্ট শর্তে টাস্ক বন্ধ করা প্রয়োজন হতে পারে। TPL এ CancellationToken এর মাধ্যমে টাস্ক ক্যান্সেল করা যায়।

using System;
using System.Threading;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        CancellationTokenSource cts = new CancellationTokenSource();
        CancellationToken token = cts.Token;

        Task task = Task.Run(() =>
        {
            for (int i = 1; i <= 5; i++)
            {
                if (token.IsCancellationRequested)
                {
                    Console.WriteLine("Task canceled.");
                    return;
                }

                Console.WriteLine("Task running: " + i);
                Thread.Sleep(1000);
            }
        }, token);

        await Task.Delay(2000); // কিছু সময় অপেক্ষা
        cts.Cancel(); // টাস্ক ক্যান্সেল

        await task;
        Console.WriteLine("Main task completed.");
    }
}

সংক্ষেপে

  • Task: একটি নির্দিষ্ট কাজ চালায় এবং কনকারেন্টলি কাজ সম্পন্ন করে।
  • Task.Run(): নতুন টাস্ক তৈরি এবং চালানো সহজ করে।
  • Task.WhenAll এবং Task.WhenAny: একাধিক টাস্ককে একত্রে বা আলাদাভাবে পরিচালনা করা যায়।
  • Parallel.For এবং Parallel.ForEach: লুপ চালানো সমান্তরালে।
  • CancellationToken: টাস্ক ক্যান্সেল করতে ব্যবহৃত হয়।

Task Parallel Library সি# এ কনকারেন্সি এবং প্যারালালিজমকে সহজ এবং কার্যকর করে তোলে। এটি ব্যবহার করে কার্যক্ষমতা বৃদ্ধি, সমান্তরালে কাজ পরিচালনা, এবং আরও দ্রুত সাড়া প্রদান করা সম্ভব হয়।

Content added By

আরও দেখুন...

Promotion